package com.liang.manage.auth.facade.server;

import com.github.pagehelper.PageInfo;
import com.liang.manage.auth.facade.dto.permissions.PermissionsDTO;
import com.liang.manage.auth.facade.dto.permissions.PermissionsSearchDTO;
import com.liang.nansheng.common.auth.PermissionsSsoDTO;
import com.liang.nansheng.common.auth.UserSsoDTO;

import java.util.List;

/**
 * @author 马亮
 * @date 2021/4/23 17:26
 */
public interface PermissionsService {
    /**
     * 新增权限
     *
     * @param permissionsDTO
     * @param currentUser
     * @return
     */
    Boolean create(PermissionsDTO permissionsDTO, UserSsoDTO currentUser);

    /**
     * 权限代码判重
     *
     * @param api
     * @param permissionsId
     * @return
     */
    Boolean isValidPermissions(String api, Integer permissionsId);

    /**
     * 根据id获取权限信息
     *
     * @param id
     * @return
     */
    PermissionsSsoDTO getSsoById(Integer id);

    /**
     * 分页获取权限
     *
     * @param permissionsSearchDTO
     * @return
     */
    PageInfo<PermissionsDTO> getList(PermissionsSearchDTO permissionsSearchDTO);

    /**
     * 更新权限
     *
     * @param permissionsDTO
     * @param currentUser
     * @return
     */
    Boolean update(PermissionsDTO permissionsDTO, UserSsoDTO currentUser);

    /**
     * 删除权限
     *
     * @param ids
     * @param currentUser
     * @return
     */
    Boolean delete(List<Integer> ids, UserSsoDTO currentUser);

    /**
     * 通过角色id分页获取所有权限
     *
     * @param permissionsSearchDTO
     * @return
     */
    PageInfo<PermissionsDTO> getAllByRoleId(PermissionsSearchDTO permissionsSearchDTO);

    /**
     * 按项目ID获取权限
     *
     * @param projectId
     * @return
     */
    List<PermissionsDTO> getRightsByProjectId(Integer projectId);
}